//go基础语法测试

//package main
//
//import (
//	"fmt"
//	"math"
//)
//
//func compute(fn func(float64, float64) float64) float64 {
//	return fn(3, 4)
//}
//
//// 函数作为参数
//func main() {
//	hypot := func(x, y float64) float64 {
//		return math.Sqrt(x*x + y*y)
//	}
//	fmt.Println(hypot(5, 12))
//
//	fmt.Println(compute(hypot))
//	fmt.Println(compute(math.Pow))
//}

// 闭包
//package main
//
//import "fmt"
//
//func main() {
//	// 这是一个外部函数，它返回一个内部函数
//	createAdder := func(x int) func(int) int {
//		return func(y int) int {
//			return x + y // 这里的 x 是外部函数的参数
//		}
//	}
//
//	addTwo := createAdder(2) // 创建一个新的函数，x=2
//
//	fmt.Println(addTwo(3)) // 输出 5，因为 2 + 3 = 5
//}

// 编写一个工资计算器，它能够根据不同的税率计算员工的工资。你需要实现一个闭包，该闭包接受一个税率作为参数，并返回一个计算净工资的函数。这个计算函数应当接受一个工资金额，并返回扣除税款后的净工资。
package main

import "fmt"

func getEndSalary(tax float32) func(int) float32 {
	return func(salary int) float32 {
		return float32(salary) * (1 - tax)
	}
}

func main() {
	xiaoming := getEndSalary(0.2)
	xiaomingSalary := xiaoming(5000)
	fmt.Println("小明的税后工资是", xiaomingSalary)

	xiaohong := getEndSalary(0.3)
	xiaohongSalary := xiaohong(5000)
	fmt.Print("小明的税后工资是", xiaohongSalary)
}
